let jwt = require("jsonwebtoken");
let {SECRET} = require("./config");

function intercept(){
  return (req,res,next)=>{
    // console.log( req.headers.token );
    let {token=""} = req.headers;
    if( !token){
      res.json({code:208,data:null,msg:"token为空，请登录"});
      return;
    }
    // try...catch 语法用于捕获JavaScript代码的错误异常。
    try {
      // 首先验证token是否有效（篡改过）
      // console.log( jwt.verify(token,SECRET) );
      if( jwt.verify(token,SECRET) ){
        // 继续验证有效期
        let {exp} = jwt.verify(token,SECRET);
        if(Date.now() > exp ){
          res.json({code:208,data:null,msg:"token已过期，请重新登录"})
          return;
        }else{
          // 说明token仍在有效期内，可以放行。
          next();
        }
      }    
    } catch (error) {
      res.json({code:500,data:error,msg:"token无效"})
    }
  }
}

module.exports = intercept;